#ifndef UNIFORM_H
#define UNIFORM_H

typedef struct UniformReal_t
{
  double low;
  double high;
  int fixed_low_high;
} UniformReal_t;

/* the parameters must be two double precision numbers */
void UniformReal_Init_Params(UniformReal_t * dist, int nparams, ...);

#define UniformReal_Init_Args while(0)

double UniformReal_Sample(const UniformReal_t * dist, int nargs, ...);

double UniformReal_LogProb(const UniformReal_t * dist, double val,
                           int nargs, ...);
double UniformReal_Prob(const UniformReal_t * dist, double val,
                        int nargs, ...);

typedef struct UniformChoice_t
{
  int dummy;
  
} UniformChoice_t;

void UniformChoice_Init_Params(UniformChoice_t * dist, int nparams);

#define UniformChoice_Init_Args while(0)

int UniformChoice_Sample(const UniformChoice_t * dist, int nargs, 
                         int num_items);

double UniformChoice_LogProb(const UniformChoice_t * dist, int val,
                             int nargs, int num_items);

double UniformChoice_Prob(const UniformChoice_t * dist, int val,
                          int nargs, int num_items);

#endif


